home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / bin / pnmindex < prev    next >
Text File  |  1995-07-02  |  3KB  |  157 lines

  1. #!/bin/csh -f
  2. #
  3. # pnmindex - build a visual index of a bunch of anymaps
  4. #
  5. # Copyright (C) 1991 by Jef Poskanzer.
  6. #
  7. # Permission to use, copy, modify, and distribute this software and its
  8. # documentation for any purpose and without fee is hereby granted, provided
  9. # that the above copyright notice appear in all copies and that both that
  10. # copyright notice and this permission notice appear in supporting
  11. # documentation.  This software is provided "as is" without express or
  12. # implied warranty.
  13.  
  14. set size=100        # make the images about this big
  15. set across=6        # show this many images per row
  16. set colors=256        # quantize results to this many colors
  17. set back="-white"    # default background color
  18.  
  19. while ( 1 )
  20.     switch ( "$1" )
  21.  
  22.     case -s*:
  23.     if ( $#argv < 2 ) goto usage
  24.     set size="$2"
  25.     shift
  26.     shift
  27.     breaksw
  28.  
  29.     case -a*:
  30.     if ( $#argv < 2 ) goto usage
  31.     set across="$2"
  32.     shift
  33.     shift
  34.     breaksw
  35.  
  36.     case -c*:
  37.     set colors="$2"
  38.     shift
  39.     shift
  40.     breaksw
  41.  
  42.     case -b*:
  43.     set back="-black"
  44.     shift
  45.     breaksw
  46.  
  47.     case -w*:
  48.     set back="-white"
  49.     shift
  50.     breaksw
  51.  
  52.     case -*:
  53.     goto usage
  54.     breaksw
  55.  
  56.     default:
  57.     break
  58.     breaksw
  59.  
  60.     endsw
  61. end
  62.  
  63. if ( $#argv == 0 ) then
  64.     goto usage
  65. endif
  66.  
  67. set tmpfile=/tmp/pi.tmp.$$
  68. rm -f $tmpfile
  69. set maxformat=PBM
  70.  
  71. set rowfiles=()
  72. set imagefiles=()
  73. @ row = 1
  74. @ col = 1
  75.  
  76. foreach i ( $argv )
  77.  
  78.     set description=`pnmfile $i`
  79.     if ( $description[4] <= $size && $description[6] <= $size ) then
  80.     cat $i > $tmpfile
  81.     else
  82.     switch ( $description[2] )
  83.         case PBM:
  84.         pnmscale -quiet -xysize $size $size $i | pgmtopbm > $tmpfile
  85.         breaksw
  86.  
  87.         case PGM:
  88.         pnmscale -quiet -xysize $size $size $i > $tmpfile
  89.         if ( $maxformat == PBM ) then
  90.         set maxformat=PGM
  91.         endif
  92.         breaksw
  93.  
  94.         default:
  95.         pnmscale -quiet -xysize $size $size $i | ppmquant -quiet $colors > $tmpfile
  96.         set maxformat=PPM
  97.         breaksw
  98.     endsw
  99.     endif
  100.     set imagefile=/tmp/pi.${row}.${col}.$$
  101.     rm -f $imagefile
  102.     if ( "$back" == "-white" ) then
  103.     pbmtext "$i" | pnmcat $back -tb $tmpfile - > $imagefile
  104.     else
  105.     pbmtext "$i" | pnminvert | pnmcat $back -tb $tmpfile - > $imagefile
  106.     endif
  107.     rm -f $tmpfile
  108.     set imagefiles=( $imagefiles $imagefile )
  109.  
  110.     if ( $col >= $across ) then
  111.     set rowfile=/tmp/pi.${row}.$$
  112.     rm -f $rowfile
  113.     if ( $maxformat != PPM ) then
  114.         pnmcat $back -lr -jbottom $imagefiles > $rowfile
  115.     else
  116.         pnmcat $back -lr -jbottom $imagefiles | ppmquant -quiet $colors > $rowfile
  117.     endif
  118.     rm -f $imagefiles
  119.     set imagefiles=()
  120.     set rowfiles=( $rowfiles $rowfile )
  121.     @ col = 1
  122.     @ row += 1
  123.     else
  124.     @ col += 1
  125.     endif
  126.  
  127. end
  128.  
  129. if ( $#imagefiles > 0 ) then
  130.     set rowfile=/tmp/pi.${row}.$$
  131.     rm -f $rowfile
  132.     if ( $maxformat != PPM ) then
  133.     pnmcat $back -lr -jbottom $imagefiles > $rowfile
  134.     else
  135.     pnmcat $back -lr -jbottom $imagefiles | ppmquant -quiet $colors > $rowfile
  136.     endif
  137.     rm -f $imagefiles
  138.     set rowfiles=( $rowfiles $rowfile )
  139. endif
  140.  
  141. if ( $#rowfiles == 1 ) then
  142.     cat $rowfiles
  143. else
  144.     if ( $maxformat != PPM ) then
  145.     pnmcat $back -tb $rowfiles
  146.     else
  147.     pnmcat $back -tb $rowfiles | ppmquant -quiet $colors
  148.     endif
  149. endif
  150. rm -f $rowfiles
  151.  
  152. exit 0
  153.  
  154. usage:
  155. echo "usage: $0 [-size N] [-across N] [-colors N] [-black] pnmfile ..."
  156. exit 1
  157.